package com.iris.live.services.data.repositories;

import com.iris.live.services.data.models.用户Model;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * Created by sxy on 2016/7/12
 */
@Component("userRepository")
public interface 用户Repository extends JpaRepository<用户Model, String>, JpaSpecificationExecutor<用户Model> {
//    @Query("select a from 用户Model a, AccountModel b where b.accountName = ?1 and b.accountId = a.accountId and a.许可 = ?2 AND a.删除状态 <> '已删除'")
//    用户Model findUserInfo(String userName, String permit);

    @Query("select a from 用户Model a where a.许可 = ?1 and a.用户名 = ?2")
    用户Model findBy许可And用户名(String license, String username);

    @Query("select u from 用户Model u where u.许可 = ?1 and u.用户名 = ?2 and u.密码 = ?3 and u.删除状态 <> '已删除'")
    用户Model findActiveUser(String license, String username, String password);

    @Query("select a from 用户Model a where a.角色='销售顾问' and a.许可=?1 and a.删除状态 <> '已删除'")
    List<用户Model> findAllSaleMan(String permit);

    @Query("select a from 用户Model a where a.角色='精品专员' and a.许可=?1 and a.删除状态 <> '已删除'")
    List<用户Model> findAlljpzhuanyuan(String permit);

    @Query("select a from 用户Model a where a.用户名=?1")
    用户Model findByCode(String code);

    @Query("select u from 用户Model u where u.许可 = ?1 and u.用户名 = ?2")
    用户Model findOneByEmail(String permit, String userName);

    @Modifying
    @Query("update  用户Model u set u.密码=?2 where u.用户名 = ?1")
    int updUserPassword(String username, String password);

    @Modifying
    @Query("UPDATE 用户Model u SET u.删除状态='已删除' WHERE u.用户名=?1")
    int deleteUserByName(String username);

    @Modifying
    @Query("update 用户Model u  set u.人员姓名=?1, u.人员电话=?2, u.接待状态=?4, u.品牌=?3,u.职位=?6, u.superior = ?7, u.销售顾问职位状态 = ?8 where u.用户名=?5")
    void updSaleConsultant(String 人员姓名, String 人员电话, String 品牌, String 接待, String 用户名, String 职位, String superior, String 销售顾问职位状态);

    @Modifying
    @Query("update 用户Model u  set u.删除状态='已删除' where u.用户名=?1")
    void delSaleConsultantGruop(String userName);

    @Query("select a from 用户Model a where a.许可=?1 and a.人员姓名=?2 and a.角色='销售顾问' and a.删除状态 <> '已删除'")
    用户Model findUserByPermitAnd人员姓名(String permit, String name);


    @Query("select u from 用户Model u where u.用户名 = ?1 and u.密码 = ?2 and (u.删除状态 <> '已删除' or u.删除状态 is null)")
    用户Model findActiveUserNoPermit(String username, String password);

    @Query("select a from 用户Model a where a.许可=?1 and a.人员姓名=?2 and a.角色='销售顾问' and a.删除状态 <> '已删除'")
    用户Model findUserByPermitAnd人员姓名NotDel(String permit, String name);

    @Query("select a from 用户Model a where a.许可=?1 and a.用户名=?2 and a.角色='销售顾问' and a.删除状态 <> '已删除'")
    用户Model findUserByPermitAnd用户名NotDel(String permit, String userName);

    @Query("select a from 用户Model a where a.许可=?1 and a.角色=?2 and a.删除状态<>'已删除'")
    List<用户Model> findBy角色And许可(String permit, String role);

    @Query("select a from 用户Model a where a.许可=?1 and a.角色=?2 and a.用户名=?3 and a.删除状态<>'已删除'")
    用户Model findByPermitAndUserName(String permit, String role, String userEmail);

    @Query("select 角色 from 用户Model where 删除状态 <> '已删除' and 用户名 = ?1")
    String findRoleByUsername(String username);

    @Query("select a from 用户Model a where a.许可=?1 and a.用户名=?2  and a.删除状态<>'已删除'")
    用户Model findByYonghumingUserName(String permit, String role);
    @Query("select a from 用户Model a where a.许可=?1 and a.用户名=?2 ")
    用户Model findByYonghumingUserNameDelete(String permit, String role);

    @Query("select a from 用户Model a where   a.用户名=?1 ")
    用户Model findByYonghumingUserNameDelete(  String role);

    @Query("select a from 用户Model a where a.角色='销售经理' and a.许可=?1 and (a.删除状态 <> '已删除' or a.删除状态 is null)")
    List<用户Model> findAllManager(String permit);

    @Query("select 用户名 from 用户Model where 许可 = ?1 and 角色 = ?2 and 删除状态 <> '已删除' ")
    String findUsernameByPermitAndRole(String permit, String role);

    @Query("select 人员姓名 from 用户Model where 许可 = ?1 and 角色 = ?2 and 删除状态 <> '已删除' ")
    String findUsernameCnByPermitAndRole(String permit, String role);

    @Modifying
    @Query("update 用户Model u  set u.密码=?2  where u.用户名 = ?1 ")
    void updateActiveUserNoPermit(String username, String password);

    @Query("select a from 用户Model a where a.用户名 = ?1 and a.删除状态 <> '已删除'")
    用户Model findModelByUsername(String username);

    @Query("select a.人员姓名 from 用户Model a where a.许可 = ?1 and a.用户名 = ?2")
    String findNameBy许可And用户名(String license, String username);

    @Query("select 人员姓名 from 用户Model where 许可 = ?1 and 角色 = '销售顾问' and 删除状态 <> '已删除'")
    List getAllScNameCnByPermit(String permit);

    @Query("select 人员姓名 from 用户Model where 用户名 = ?1 and 删除状态 <> '已删除' ")
    String findNameameCnById(String username );

    @Query("select 许可 from 用户Model where 删除状态 <> '已删除'  and 用户名 = ?1")
    String findPermitByUsername(String username);
//    /**
//     * 查找group用户
//     * @param userName
//     * @return
//     */
//    @Query("select a from 用户Model a, AccountModel b where a.accountId = b.accountId and b.accountName = ?1 and a.userType = '1'  ")
//    List<用户Model> findUserByUserNameForGroup(String userName);
//
//    @Query("select a from 用户Model a where a.accountId = ?1")
//    List<用户Model> findAllUserInfoes(Integer accountId);
}
